import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class JdbcSelectDemo {
    public static void main(String[] args) throws SQLException {
        // 1.创建数据源，描述了数据库服务器在哪
        DataSource dataSource = new MysqlDataSource();
        // 设置数据库所在的位置，当前是固定写法
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("000000");

        // 2.和数据库建立网络连接（写的 jdbc 代码本质上是一个 MySQL 客户端，要通过网络和服务器进行通信）
        Connection connection = dataSource.getConnection();

        // 3.构造一个 sql 语句来完成 插入操作
        // 描述 sql 语句
        String sql = "select * from student where id = 1";
        //这一步才是真正的构造 sql
        PreparedStatement statement = connection.prepareStatement(sql);

        //结果集合
        // 查询使用executeQuery
        ResultSet resultSet = statement.executeQuery();
        //拿到每一行 - next 相当于是使光标移动到下一行
        while (resultSet.next()) {
            // 使用getXX 的方式得到每一列
            // 如果是int就是 getInt，如果是String，就是getString...
            // 这里的参数就是数据表的列名
            int id = resultSet.getInt("id"); // 代码的作用是得到 id 这一列的值
            String name = resultSet.getString("name"); // 代码的作用是得到 name 这一列的值
            //输出查询的结果
            System.out.println(id + ":" + name);
        }

        // 释放资源 - 释放顺序和创建顺序相反
        resultSet.close();
        statement.close();
        connection.close();
    }
}
